.\"
.\"	$OpenBSD: SSL_SESSION_get_ex_new_index.3,v 1.2 2014/12/02 14:11:01 jmc Exp $
.\"
.Dd $Mdocdate: December 2 2014 $
.Dt SSL_SESSION_GET_EX_NEW_INDEX 3
.Os
.Sh NAME
.Nm SSL_SESSION_get_ex_new_index ,
.Nm SSL_SESSION_set_ex_data ,
.Nm SSL_SESSION_get_ex_data
.Nd internal application specific data functions
.Sh SYNOPSIS
.In openssl/ssl.h
.Ft int
.Fo SSL_SESSION_get_ex_new_index
.Fa "long argl"
.Fa "void *argp"
.Fa "CRYPTO_EX_new *new_func"
.Fa "CRYPTO_EX_dup *dup_func"
.Fa "CRYPTO_EX_free *free_func"
.Fc
.Ft int
.Fn SSL_SESSION_set_ex_data "SSL_SESSION *session" "int idx" "void *arg"
.Ft void *
.Fn SSL_SESSION_get_ex_data "const SSL_SESSION *session" "int idx"
.Bd -literal
 typedef int new_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
                int idx, long argl, void *argp);
 typedef void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
                int idx, long argl, void *argp);
 typedef int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d,
                int idx, long argl, void *argp);
.Ed
.Sh DESCRIPTION
Several OpenSSL structures can have application specific data attached to them.
These functions are used internally by OpenSSL to manipulate
application-specific data attached to a specific structure.
.Pp
.Fn SSL_SESSION_get_ex_new_index
is used to register a new index for application-specific data.
.Pp
.Fn SSL_SESSION_set_ex_data
is used to store application data at
.Fa arg
for
.Fa idx
into the
.Fa session
object.
.Pp
.Fn SSL_SESSION_get_ex_data
is used to retrieve the information for
.Fa idx
from
.Fa session .
.Pp
A detailed description for the
.Fn *_get_ex_new_index
functionality
can be found in
.Xr RSA_get_ex_new_index 3 .
The
.Fn *_get_ex_data
and
.Fn *_set_ex_data
functionality is described in
.Xr CRYPTO_set_ex_data 3 .
.Sh WARNINGS
The application data is only maintained for sessions held in memory.
The application data is not included when dumping the session with
.Xr i2d_SSL_SESSION 3
(and all functions indirectly calling the dump functions like
.Xr PEM_write_SSL_SESSION 3
and
.Xr PEM_write_bio_SSL_SESSION 3 )
and can therefore not be restored.
.Sh SEE ALSO
.Xr CRYPTO_set_ex_data 3 ,
.Xr RSA_get_ex_new_index 3 ,
.Xr ssl 3
